package tech.aistar.day04;

import java.util.Calendar;
import java.util.Date;

/**
 * 本类用来演示: 日历类
 *
 * @author: success
 * @date: 2021/3/9 2:57 下午
 */
public class CaledarDemo {

    public static void main(String[] args) {
        //日历类本身是使用abstract关键字进行修饰的
        //使用了abstract关键字修饰的类 - 抽象类
        //抽象类是不能够被实例化的 - 不能够被new的.
        //Calendar cal = new Calendar();

        //底层使用使用到了一个设计模式 - 简单工厂设计模式
        Calendar cal = Calendar.getInstance();

        System.out.println(cal);

        //获取日历中的字段信息
        int year = cal.get(1);
        System.out.println("year:"+year);//2021

        //获取月份 - [0,11]
        int month = cal.get(2)+1;
        System.out.println("month:"+month);

        //如果直接传入字面量 - 可读性比较差 - 难记忆.

        //※ -> 使用静态的常量属性来代替字面量
        //目的 - 提高程序的可读性

        int years = cal.get(Calendar.YEAR);
        //System.out.println(Calendar.YEAR);
        System.out.println("years:"+year);

        int date = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println("date:"+date);

        //设置值
        cal.set(Calendar.YEAR,2021);
        cal.set(Calendar.MONTH,2);//3月份
        cal.set(Calendar.DAY_OF_MONTH,7);

        //周日实际的数字是1
        int week = cal.get(Calendar.DAY_OF_WEEK)-1;
        System.out.println("week:"+week);


        //属性 - 类的全局变量
        //静态的 - static
        //常量 - final
        //定义一个公开的静态的常量属性
        //FinalStaticMemDemo.DAY_OF_MONTH = 100;

        System.out.println(FinalStaticMemDemo.DAY_OF_MONTH);

        System.out.println("===Date和Calendar转换==");
        //Calendar->Date
        Calendar cen = Calendar.getInstance();
        Date dt = cen.getTime();
        System.out.println(dt);

        //Date -> Calendar
        Date now = new Date(2022-1900,4,1);
        cen.setTime(now);//利用date构建新的calendar字段
        System.out.println(cen);
    }
}
